﻿using System;
using System.Configuration;
using System.Web.UI;
using System.Drawing;
using System.Net.Configuration;
using System.Net.Mail;
using System.IO;
using DTO;
using BUS;
using System.Collections.Generic;
using System.Xml;

namespace WebRaoVat
{
    public partial class DangKy : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Page_PreInit(object sender, EventArgs e)
        {
            Page.Theme = ((XmlElement)XL_XML.ReadNodeSingle(XL_XML.ReadDocumentFile(Server.MapPath("Gui.xml")),
            "/GIAODIEN/THEME")).GetAttribute("ten");
        }        

        public List<string> ErrorMessage = new List<string>();

        protected void btnHoanTat_Click(object sender, EventArgs e)
        {
            ErrorMessage.Clear();
            bool bKiemTra = false;

            //Kiểm tra mail            
            string strEmail = txtEmail.Text.Trim().ToLower();

            if (strEmail.Length <= 0)
            {
                ErrorMessage.Add("* Email không được rỗng");
                txtEmail.BackColor = Color.Red;
                bKiemTra = true;
            }
            else if (NguoiDungBUS.kiemTraEmailTrung(strEmail) == true)
            {
                ErrorMessage.Add("* Email này đã có người sử dụng");
                txtEmail.BackColor = Color.Red;
                bKiemTra = true;
            }
            else
            {
                txtEmail.BackColor = Color.White;
            }

            //Kiểm tra tên người dùng
            string strUsername = txtUsername.Text.Trim().ToLower();

            if (strUsername.Length <= 0)
            {
                ErrorMessage.Add("* Tên người dùng không được rỗng");
                txtUsername.BackColor = Color.Red;
                bKiemTra = true;
            }
            else if (NguoiDungBUS.kiemTraTenTrung(strUsername) == true)
            {
                ErrorMessage.Add("* Tên người dùng này đã tồn tại");
                txtUsername.BackColor = Color.Red;
                bKiemTra = true;
            }
            else
            {
                txtUsername.BackColor = Color.White;
            }

            //Kiểm tra password
            string strPassword = txtPassword.Text.Trim();

            if (8 > strPassword.Length || strPassword.Length > 15)
            {
                ErrorMessage.Add("* Mật khẩu tối thiểu 8 ký tự, tối đa 15 ký tự");
                txtPassword.BackColor = Color.Red;
                bKiemTra = true;
            }
            else
            {
                txtPassword.BackColor = Color.White;
            }

            //Kiểm tra nhập lại password
            string strPasswordAgain = txtPasswordAgain.Text.Trim();

            if (strPassword.ToLower().CompareTo(strPasswordAgain.ToLower()) != 0)
            {
                ErrorMessage.Add("* Mật khẩu nhập lại không đúng");
                txtPasswordAgain.BackColor = Color.Red;
                bKiemTra = true;
            }
            else
            {
                txtPasswordAgain.BackColor = Color.White;
            }

            //Phần Captcha
            if (txtCaptcha.Text.Equals(Session["captcha"].ToString(), StringComparison.OrdinalIgnoreCase))
            {
                txtCaptcha.BackColor = Color.White;
            }
            else
            {
                txtCaptcha.BackColor = Color.Red;
                ErrorMessage.Add("* Mã bảo mật không đúng");
                bKiemTra = true;
            }

            if (bKiemTra == true)
            {
                return;
            }

            //Phần gửi mail            
            StreamReader sr = new StreamReader(Server.MapPath("TemplateMail/TemplateMail.htm"));

            sr = File.OpenText(Server.MapPath("TemplateMail/TemplateMail.htm"));

            string content = sr.ReadToEnd();
            content = content.Replace("[Sender]", "B1_Group");
            content = content.Replace("[Content]", "Chúc mừng bạn đã đăng ký thành công !");
            content = content.Replace("[DateTime]", DateTime.Now.ToString());

            if (SendMail("Welcome !", content, txtEmail.Text.Trim(), true, false) == false)
            {
                ErrorMessage.Add("* Gửi mail không thành công");
                return;
            }

            //Thành công                        
            string strDienThoai = txtDienThoai.Text.Trim();
            string strDiaChi = txtDiaChi.Text.Trim();

            NguoiDungDTO nguoiDung = new NguoiDungDTO();
            nguoiDung.Email = strEmail;
            nguoiDung.TenNguoiDung = strUsername;
            nguoiDung.MatKhau = strPassword;
            nguoiDung.DienThoai = strDienThoai;
            nguoiDung.DiaChi = strDiaChi;
            nguoiDung.MaKichHoatTaiKhoan = "";
            nguoiDung.TinhTrangKichHoatTaiKhoan = "";
            nguoiDung.ThoiGianDangKy = DateTime.Now;
            nguoiDung.ThoiGianHetHan = new DateTime(2100, 1, 1);
            nguoiDung.MaLoaiNguoiDung = 1;
            nguoiDung.MaGiaoDien = 1;

            try
            {
                NguoiDungBUS.Insert(nguoiDung);

                Session.Add("TenNguoiDungVuaDangKy", nguoiDung.TenNguoiDung);                
                Session.Add("EmailVuaDangKy", nguoiDung.Email);
                Response.Redirect("DangKyThanhCong.aspx");
            }
            catch (System.Exception ex)
            {
                ShowMessage("Đăng ký không thành công !");
                return;
            }
        }

        private void ShowMessage(string mess)
        {
            string strBuilder = "<script language='javascript'>alert('" + mess + "')</script>";
            Response.Write(strBuilder);
        }

        public static string FormAddress
        {
            get
            {
                SmtpSection cfg = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp");
                return cfg.Network.UserName;
            }
        }

        public bool SendMail(string subject, string body, string to, bool isHtml, bool isSSL)
        {
            try
            {
                using (MailMessage mail = new MailMessage())
                {
                    mail.From = new MailAddress(FormAddress, "Rao vặt - B1 Group");
                    mail.To.Add(to);
                    mail.Subject = subject;
                    mail.Body = body;
                    mail.IsBodyHtml = isHtml;
                    SmtpClient client = new SmtpClient();
                    client.EnableSsl = isSSL;
                    client.Send(mail);
                }
            }
            catch (System.Exception ex)
            {
                return false;
            }

            return true;
        }
    }
}
